package 笔试.顺丰笔试.第二题赏金猎人;

import java.util.ArrayList;
import java.util.Scanner;
//时间限制： 3000MS
//内存限制： 786432KB
//题目描述：
//克里森是一名赏金猎人，他平时需要完成一些任务赚钱。最近他收到了一批任务，但是受到时间的限制，他只能完成其中一部分。具体来说就是有n个任务，每个任务用l, r, w来表示任务开始的时间l，结束的时间r和完成任务获得的金钱。
//
//克里森是个贪心的人，他想知道自己在任务不冲突的情况下最多获得多少金钱。
//输入描述
//第一行一个数n表示任务的个数。(1≤n≤1e3)
//
//接下来n行每行三个整数l, r, w表示第i个任务的开始时间，结束时间，以及收益。(1≤l≤r≤1e6,1≤w≤1e9)
//
//输出描述
//输出一个值表示克里森最多获得的金钱数量。

//样例输入
//3
//1 3 5
//2 7 3
//5 10 1
//样例输出
//6
//public class Main
//{
//    static ArrayList<Task> tasks = new ArrayList<>();
//    public static void main(String[] args)
//    {
//        Scanner sc = new Scanner(System.in);
//        int n=sc.nextInt();
////        Task[] tasks=new Task[n];
//
//        while (n>0)
//        {
//            int l=sc.nextInt();
//            int r=sc.nextInt();
//            int w=sc.nextInt();
//            Task task = new Task(l, r, w);
//            tasks.add(task);
//            n--;
//        }
//        System.out.println(opt(n));
//
//    }
//    public static int pre(int n)
//    {
//        for (int i = n-1; i>0; i--)
//        {
//            if (tasks.get(i).getEnd()<=tasks.get(n).getBegin())
//            {
//                return i;
//            }
//        }
//        return 0;
//    }
//    public static int opt(int n)
//    {
//        if (n==1||n==0)
//            return tasks.get(n).getValue();
//        return (Math.max(opt(n-1),tasks.get(n).getValue()+opt(pre(n))));
//    }
//}
import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        Task[] tasks = new Task[n];
        for(int i = 0; i < n; i++) {
            long s = sc.nextLong();
            long e = sc.nextLong();
            long v = sc.nextLong();
            tasks[i] = new Task(s,e,v);
        }
        Arrays.sort(tasks);
        long[] dp = new long[n];
        dp[0] = tasks[0].value;
        for(int i = 0; i < n; i++) {
            Task t = tasks[i];
            long max = t.value;
            for(int j = 0; j < i; j++) {
                if(tasks[j].end <= t.start) {
                    max = Math.max(dp[j]+t.value,max);
                }
            }
            dp[i] = max;
        }
        long max = 0;
        //System.out.println(Arrays.toString(dp));
        for(int i = 0; i < n; i++) {
            max = Math.max(dp[i],max);
        }
        System.out.println(max);
    }
}

